.TH std::ranges::subrange::begin 3 "2024.06.10" "http://cppreference.com" "C++ Standard Libary"
.SH NAME
std::ranges::subrange::begin \- std::ranges::subrange::begin

.SH Synopsis
   constexpr I begin() const requires std::copyable<I>;            \fB(1)\fP \fI(since C++20)\fP
   [[nodiscard]] constexpr I begin() requires (!std::copyable<I>); \fB(2)\fP \fI(since C++20)\fP

   Obtains the iterator to the first element of the subrange, or the end iterator if
   the view is empty.

   range-begin-end.svg

   1) Returns a copy of the stored iterator if the iterator type is copyable.
   2) Returns an iterator move-constructed from the stored iterator if the iterator
   type is not copyable.

.SH Parameters

   \fI(none)\fP

.SH Return value

   1) An iterator copy-constructed from the stored iterator.
   2) An iterator move-constructed from the stored iterator.

.SH Notes

   A call to \fB(2)\fP may leave the stored iterator in a valid but unspecified state,
   depending on the behavior of the move constructor of I.

.SH Example

    This section is incomplete
    Reason: no example

.SH See also

   end           obtains the sentinel
   (C++20)       \fI(public member function)\fP
   begin
   cbegin        returns an iterator to the beginning of a container or array
   \fI(C++11)\fP       \fI(function template)\fP
   \fI(C++14)\fP
   ranges::begin returns an iterator to the beginning of a range
   (C++20)       (customization point object)

.SH Category:
     * Todo no example
